﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataAccess;
using Support.Exceptions;
using Support.DTO;

namespace Business
{
    public class Afiliado
    {
        #region properties

        string Transferido
        {
            get;
            set;
        }
        string NroInternoTitular
        {
            get;
            set;
        }
        string NroInternoFamiliar
        {
            get;
            set;
        }
        string NroAfiliadoTitular
        {
            get;
            set;
        }
        string nroAfiliadoFamiliar
        {
            get;
            set;
        }
        string Nombre
        {
            get;
            set;
        }
        string Apellido
        {
            get;
            set;
        }
        string Cuil
        {
            get;
            set;
        }
        string Nacionalidad
        {
            get;
            set;
        }
        string Sexo
        {
            get;
            set;
        }
        string EstadoCivil
        {
            get;
            set;
        }
        string Discapacitado
        {
            get;
            set;
        }
        string NivelDiscapacidad
        {
            get;
            set;
        }
        string Estudia
        {
            get;
            set;
        }
        string NivelEstudio
        {
            get;
            set;
        }
        string Trabaja
        {
            get;
            set;
        }
        string Censado
        {
            get;
            set;
        }
        string Parentesco
        {
            get;
            set;
        }
        string Delegacion
        {
            get;
            set;
        }
        string Filial
        {
            get;
            set;
        }
        string Calle
        {
            get;
            set;
        }
        string CalleNumero
        {
            get;
            set;
        }
        string Piso
        {
            get;
            set;
        }
        string Departamento
        {
            get;
            set;
        }
        string Pallier
        {
            get;
            set;
        }
        string Telefono
        {
            get;
            set;
        }
        string TelefonoAuxiliar
        {
            get;
            set;
        }
        string Provincia
        {
            get;
            set;
        }
        string Localidad
        {
            get;
            set;
        }
        string CodigoPostal
        {
            get;
            set;
        }
        string TipoDocumento
        {
            get;
            set;
        }
        string NumeroDocumento
        {
            get;
            set;
        }
        string EntidadEmisora
        {
            get;
            set;
        }
        string CategoriaTitular
        {
            get;
            set;
        }
        string EmpresaId
        {
            get;
            set;
        }
        string FechaIngreso
        {
            get;
            set;
        }

        #endregion

        public static int GuardarAfiliado(
            string Transferido,
            string NroInternoTitular,
            string NroInternoFamiliar,
            string NroAfiliadoTitular,
            string nroAfiliadoFamiliar,
            string FechaNacimiento,
            string Nombre,
            string Apellido,
            string Cuil,
            string Nacionalidad,
            string Sexo,
            string EstadoCivil,
            string Discapacitado,
            string NivelDiscapacidad,
            string Estudia,
            string NivelEstudio,
            string Trabaja,
            string Censado,
            string Parentesco,
            string Delegacion,
            string Filial,
            string Calle,
            string CalleNumero,
            string Piso,
            string Departamento,
            string Pallier,
            string Telefono,
            string TelefonoAuxiliar,
            string Provincia,
            string Localidad,
            string CodigoPostal,
            string TipoDocumento,
            string NumeroDocumento,
            string EntidadEmisora,
            string CategoriaTitular,
            string EmpresaId,
            string FechaIngreso,
            string FechaCarga,
            string FechaExcepcion,
            string MotivoExcepcion
        )
        {
            AfiliadoDAL afiliadoDAL = new AfiliadoDAL();
            try
            {
                return afiliadoDAL.GuardarAfiliado(Transferido,
                    NroInternoTitular,
                    NroInternoFamiliar,
                    NroAfiliadoTitular,
                    nroAfiliadoFamiliar,
                    FechaNacimiento,
                    Nombre,
                    Apellido,
                    Cuil,
                    Nacionalidad,
                    Sexo,
                    EstadoCivil,
                    Discapacitado,
                    NivelDiscapacidad,
                    Estudia,
                    NivelEstudio,
                    Trabaja,
                    Censado,
                    Parentesco,
                    Delegacion,
                    Filial,
                    Calle,
                    CalleNumero,
                    Piso,
                    Departamento,
                    Pallier,
                    Telefono,
                    TelefonoAuxiliar,
                    Provincia,
                    Localidad,
                    CodigoPostal,
                    TipoDocumento,
                    NumeroDocumento,
                    EntidadEmisora,
                    CategoriaTitular,
                    EmpresaId,
                    FechaIngreso,
                    FechaCarga,
                    FechaExcepcion,
                    MotivoExcepcion
                );
            }
            catch (Exception ex)
            {
                throw new BusinessException(string.Format("Error al guardar el afiliado"), ex);
            }
        }

        public static List<AfiliadoDTO> BuscarAfilByNroInterno(string nroInterno)
        {
            try
            {
                AfiliadoDAL afiliadoDAL = new AfiliadoDAL();
                return afiliadoDAL.BuscarAfilByNroInterno(nroInterno);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static List<AfiliadoDTO> BuscarAfilByNroDocumento(string nroDocumento)
        {
            try
            {
                AfiliadoDAL afiliadoDAL = new AfiliadoDAL();
                return afiliadoDAL.BuscarAfilByNroDocumento(nroDocumento);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static List<AfiliadoDTO> BuscarAfilByNombre(string nombre, string apellido)
        {
            try
            {
                AfiliadoDAL afiliadoDAL = new AfiliadoDAL();
                return afiliadoDAL.BuscarAfilByNombre(nombre, apellido);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static int UpdateAfiliado(AfiliadoDTO afiliado)
        {
            try
            {
                AfiliadoDAL afiliadoDAL = new AfiliadoDAL();
                return afiliadoDAL.UpdateAfiliado(afiliado);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            
        }
    }
}
